It is well known that software applications can be utilized to implement computerized versions of existing business processes. Business processes are the processes a business must execute in order for the business to operate. For example, a finance company that originates or purchases mortgages or other loans must be able to analyze those loans or loan applications in order to determine if the loan meets the company's requirements. The tests and procedures that are applied to complete this analysis are examples of business processes.
Software products currently exist that allow a business manager to define business processes according to a set of business rules. These rules analyze and compare business data and make a determination based on the result of that analysis. Often, these rules are in the form of “IF X THEN Y” type statements. Another way to envision these business rules is through a flow chart, which shows the evaluation of and flow from one business rule to another.
Once the business rules are defined, they can be entered directly into the software product. This step may involve the assistance of a computer programmer, or the software product may be designed such that the business rules can be defined and entered by a business manager with no programming experience. The software product is then able to implement these rules using some type of rules engine. In order for the rules engine to be effective, the software product must also have a support layer that assists the rules engine. The support layer is able to access and alter the business data upon which the business rules act.
These types of software products have greatly assisted companies in the speedy development of new business applications. This is especially important when it is realized that companies are constantly adjusting and changing the processes they utilize to accomplish their work. Since these software products implement most of the business processes in high level business rules, it is much easier to monitor and change these rules to reflect revised business processes than to change applications that are programmed from scratch.
Unfortunately, none of these products are able to effectively handle temporary changes to the business logic. For instance, a company that purchases loans for securitization may have a standard set of business rules to analyze the loans in order to determine whether they are appropriate for purchase. Such a company may enter into negotiations with a variety of loan originators, and these negotiations may lead to a change in the business rules when evaluating loans from these originators. Thus, it would be useful to temporarily adjust the business rules to reflect the negotiations without making a permanent change to the underlying base rules. While it would be possible to simply duplicate the base rules and then make changes to the duplicate set of rules, this would require that multiple sets of rules be maintained. If, at a later date, a change is desired for the base set of rules, the change would have to be carried over to each of the duplicate set of rules made for each negotiation. What is needed is a way to maintain only one set of base rules, with a system that is capable of making temporary alterations to the base set according to negotiations made with each originator.